Tomohiro Abe

python
plot(2d)
plot(contour)

python

Last update 2018.4.5

Introduction

最初から入っていた。

Reference(?)

Python Data Science Handbook
note.nkmk.me

リストの結合

[] で囲んだものがリスト。[1,2,3]など。 ほかにも array とか tuple があって,別物のようなので注意。
リストの結合例:

  dam1=[1,2,3]
  dam2=[8,9]
  dam3=dam1+dam2

とすると,dam3 は [1,2,3,8.9] となる。3つ以上のリストを足してもよい。

SciPy

物理定数などを計算したいとき、次をする。
from scipy.constants import *
その後、例えばプランク定数を2pi で割ったやつを知りたいときは hbar と打つと数字がでてくる。どんな定数が得られるかは ここを見よ。

cython

terminal で
pip install cython
とすると勝手にダウンロードして色々入れてくれる。

numba

(メモをしたもののなんだったか全く覚えていない)
https://librabuch.jp/blog/2015/04/numba-install-for-mac/

brew install llvm (これは v3.8 がはいるのでだめ 2016.10.4.)
brew install homebrew/versions/llvm37

# llvmのインストール
brew install llvm
# パスはバージョンに応じて適時書き換えて下さい
export LLVM_CONFIG=/usr/local/Cellar/llvm/3.5.1/bin/llvm-config

# 依存パッケージのpipインストール
pip install numpy
pip install enum34
pip install funcsigs

# llvmlite のインストール
pip install llvmlite

# Numbaのpipインストール
pip install numba

Tips

分数は、以下のように、それより小さい整数に置き換えられてしまう。
>>> 1/2
0

>>> -1/2
-1
なので、1./2 とか 1/2. などと入力したほうがよい。これを忘れると、例えば、
>>> -1/2 * (4*np.pi)**2
-0.006332573977646111
となってしまい、見事に2倍間違う。

代入が mathematica 的なことになるっぽい(?) 再現性がないので間違いかも。

    dam0 = np.append(jini,log10sigmav0)   # dam0 = [1,2,3,4,5,...]
    dam = dam0                            # dam  = [1,2,3,4,5,...]
    dam0[0] = 10                          # dam0  = [10,2,3,4,5,...]
    print dam                             # [10,2,3,4,5,...] が表示される。

  

ファイルを読み込み、計算し、出力

次のファイルを読み込み
# m1   m2 
100 100
100 200 
100 300
...
f(m1, m2) を計算し、次のように出力したいとする。
# m1   m2 f(m1, m2)
100 100 200
100 200 300
100 300 400
...
入力ファイル名を "input.dat"、出力ファイル名を "output.dat" とする。
まず最初の行は変更するには、
import linecache
inputName = "input.dat"
outputName = "output.dat"
legend = linecache.getline(inputName,1)
legendnew =legend.replace("\n","f(m1,m2)   \n")
outfp=open(outputName, 'a')
outfp.write(legendnew)
outfp.close()
とすればよい。legend が2個しかないなら、手で入力しても良いが、これなら何個legend があっても変更が容易。

Integral

integrate.quad を使う。tuple で (こたえ、絶対誤差) という形で答えが出てくる。 答えだけ欲しければ ans[0] などとして取り出す。

# 1変数の関数 f(x) を積分したい。
def f(x):
    return 4/(1+x**2)

print integrate.quad(f, 0, 1)
これは f(x) を 0 から 1 まで積分する。

# 2変数の関数 f(x,a) を x について積分したい。
def f(x,a):
    return a*4/(1+x**2)

a = 1
print integrate.quad(f, 0, 1,args=a)
これは f(x,1) を 0 から 1 まで積分する。

# 3変数の関数 f(x,a,b) を x について積分したい。
def f(x,a):
    return a*4/(1+x**2) + b

a = 1
b = 10
print integrate.quad(f, 0, 1,args=(a,b))
これは f(x,1,10) を 0 から 1 まで積分する。